#!/usr/bin/env python
# -*- coding: utf-8 -*-

##################################################################
#
#		PyAcAdmin - Sistema Gerenciador de Academia
#
# 	Este arquivo faz parte do projeto PyAcAdmin
#	http://code.google.com/p/pyacadmin/
#	Desenvolvido por: Carlos Henrique Marques da Cunha Filho
#	rickadt@gmail.com
#
##################################################################

import pygtk
pygtk.require("2.0")
import gtk
from pysqlite2 import dbapi2 as sqlite
import os.path
import pango
import time
import gtk.gdk
import gobject
import re
" Importando arquivos do sistema "
import interface
import db

class pyAcAdmin:
	def __init__(self):
		" Importando script banco de dados "
		self.banco = db.banco()
		self.banco.checaDB()
		self.banco.con()
		
		" Importando Interface do sistema "
		self.interface = interface.PyAcAdminInterface()
		self.interface.janela.connect('destroy', self.sair)
		self.interface.janela.show_all()
		
		########## Conectando os botões as funções
		" Conectando os Botões da Toolbar principal "
		self.interface.btCliente.connect('clicked', self.chamaAba0)
		self.interface.btContrato.connect('clicked', self.chamaAba1)
		self.interface.btFinanceiro.connect('clicked', self.chamaAba2)
		self.interface.btManutencao.connect('clicked', self.chamaAba3)
		self.interface.btPlanos.connect('clicked', self.chamaAba4)
		
		" Conectando os Botões da Toolbar clientes "
		self.interface.btFormCadCliente.connect('clicked', self.formCadCliente)
		self.interface.btFormPesCliente.connect('clicked', self.formPesCliente)
		"##### Conectando os Botões para manutenção de clientes "
		self.interface.btCadastrarCliente.connect('clicked', self.cadastrarCliente)
		self.interface.btPesquisarClienteNome.connect('clicked', self.pesquisarClienteNome)
		self.interface.btPesquisarClienteCodigo.connect('clicked', self.pesquisarClienteCodigo)
		self.interface.btAltCliente.connect('clicked', self.formAltCliente)
		self.interface.btSalvarAltCliente.connect('clicked', self.salvaAltCliente)
		
		" Conectando os Botões da toolbar Financeira "
		self.interface.btRecebimento.connect('clicked', self.formRecebimento)
		self.interface.btPagamento.connect('clicked', self.formPagamento)
		
		" Conectando os Botões da tollbar Planos "
		self.interface.btNovoPlano.connect('clicked', self.formNovoPlano)
		self.interface.btPesquisaPlano.connect('clicked', self.formPesPlano)
		"##### Conectanado os Botões para manutenção de Planos "
		self.interface.btSalvarPlano.connect('clicked', self.salvarPlano)
		self.interface.btPesPlanoDescricao.connect('clicked', self.pesquisarPlanoDescricao)
		self.interface.btPesPlanoCodigo.connect('clicked', self.pesquisarPlanoCodigo)
		self.interface.btSalvarAltPlanos.connect('clicked', self.salvarAltPlanos)
		self.interface.btAltPlano.connect('clicked', self.preencheFormAltPlano)
		
		" Conectando os Botões da toolbar Manutenção "
		self.interface.btNovoContrato.connect('clicked', self.formNovoContrato)
		self.interface.btPesquisarContrato.connect('clicked', self.formPesContrato)
		self.interface.btGerarMensalidade.connect('clicked', self.formGeraMensalidade)
		
		"##### Conecta o botão que chama o Calendaio "
		self.interface.btInformarCliente.connect('clicked', self.chamaFormClienteNovoContrato)
		self.interface.btInformarPlano.connect('clicked', self.chamaFormPlanoNovoContrato)
		self.interface.btCalendarInicio.connect('clicked', self.chamaCalendarInicio)
		self.interface.btCalendarTermino.connect('clicked', self.chamaCalendarTermino)
		self.interface.btGravarContrato.connect('clicked', self.salvarContrato)
		self.interface.btPesContratoCodCliente.connect('clicked', self.pesquisarContratoCliente)
		self.interface.btPesContratoCodContrato.connect('clicked', self.pesquisarContratoCodigo)
		self.interface.btVisualizarContrato.connect('clicked', self.preencheFormAltContrato)
		
	########## Cria uma Mensagem pop-up
	def mensagem(self, tipo, texto):
		if tipo == 'info':
			msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, texto)
			msg.set_position(gtk.WIN_POS_CENTER)
			msg.run()
			msg.destroy()
		elif tipo == 'erro':
			msg= gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, texto)
			msg.set_position(gtk.WIN_POS_CENTER)
			msg.run()
			msg.destroy()
	##########
	
		
	#########
	### Chama os Abas do Notebook Principal
	def chamaAba0(self, widget):
		self.interface.notebook.set_current_page(0)
	def chamaAba1(self, widget):
		self.interface.notebook.set_current_page(1)
	def chamaAba2(self, widget):
		self.interface.notebook.set_current_page(2)
	def chamaAba3(self, widget):
		self.interface.notebook.set_current_page(3)
	def chamaAba4(self, widget):
		self.interface.notebook.set_current_page(4)
	##########
	
	
	##########
	### Chama os Formulários do Notebook Cliente
	def formCadCliente(self, widget):
		self.interface.nbCliente.set_current_page(0)
	def formPesCliente(self, widget):
		self.interface.nbCliente.set_current_page(1)
	##########
		
	
	##########
	### Chama os Formulários do Notebook Financeiro
	def formRecebimento(self, widget):
		self.interface.nbFinanceiro.set_current_page(0)
	def formPagamento(self, widget):
		self.interface.nbFinanceiro.set_current_page(1)
	##########
	
	
	
	##########
	### Chama os Formulários do Notebook Manutenção
	def formNovoContrato(self, widget):
		self.interface.nbContrato.set_current_page(0)
	def formPesContrato(self, widget):
		self.interface.nbContrato.set_current_page(1)
	##########
	
	
	##########
	### Chama os Formulários do Notebook Planos
	def formNovoPlano(self, widget):
		self.interface.nbPlanos.set_current_page(0)
	def formPesPlano(self, widget):
		self.interface.nbPlanos.set_current_page(1)
	#########
	
	
	##########
	### Gera as mensalidades do cliente
	def formGeraMensalidade(self, widget):
		self.interface.nbManutencao.set_current_page(0)
	##########
	
	
	#########
	def cadastrarCliente(self, widget):
		" Pega um ID valido "
		id = self.banco.novaId('idClientes', 'clientes')
		" Pega os dados do Formulário "
		nome = self.interface.txtCadClienteNome.props.text
		endereco = self.interface.txtCadClienteEndereco.props.text
		telefone = self.interface.txtCadClienteTelefone.props.text
		cidade = self.interface.txtCadClienteCidade.props.text
		CEP = self.interface.txtCadClienteCEP.props.text
		RG = self.interface.txtCadClienteRG.props.text
		CPF = self.interface.txtCadClienteCPF.props.text
		dia, mes, ano = self.interface.txtCadClienteDataN.props.text.split('/')
		dataN = ano+"-"+mes+"-"+dia
		dia, mes, ano = self.interface.txtCadClienteDataC.props.text.split('/')
		dataC = ano+"-"+mes+"-"+dia
		" Cria a SQL "
		sql = """INSERT INTO clientes 
		(idClientes, nome, endereco, telefone, cidade, CEP, RG, CPF, dataN, dataC) 
		VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')
		"""% (id, nome, endereco, telefone, cidade, CEP, RG, CPF, dataN, dataC)
		" Grava no DB "
		self.banco.sqlCommit(sql)
		" os campos "
		self.interface.txtCadClienteNome.props.text = ""
		self.interface.txtCadClienteEndereco.props.text = ""
		self.interface.txtCadClienteTelefone.props.text = ""
		self.interface.txtCadClienteCidade.props.text = ""
		self.interface.txtCadClienteCEP.props.text = ""
		self.interface.txtCadClienteRG.props.text = ""
		self.interface.txtCadClienteCPF.props.text = ""
		self.interface.txtCadClienteDataN.props.text = ""
		self.interface.txtCadClienteDataC.props.text = ""
	##########
	
	
	
	
	##########
	def pesquisarClienteNome(self, widget):
		nome = self.interface.txtPesClienteNome.props.text
		self.interface.txtPesClienteNome.props.text = ''
		if nome == "":
			self.mensagem('erro', 'Preencha o campo Nome.')
		else:
			sql = "SELECT idClientes, nome, endereco, telefone FROM Clientes WHERE nome LIKE '%" + nome + "%'"
			dados = self.banco.sqlSelect(sql)
			self.interface.nbCliente.set_current_page(2)
			model = self.interface.treev.get_model()
			model.clear()
			for linha in dados:
				model.append([linha[0], linha[1], linha[2], linha[3]])
			
	##########
	
	##########
	def pesquisarClienteCodigo(self, widget):
		codigo = self.interface.txtPesClienteCodigo.props.text
		self.interface.txtPesClienteCodigo.props.text = ''
		try:
			codigoInt = int(codigo)
		except:
			self.mensagem('erro', 'Preencha o campo Código corretamente')
		else:
			if codigo == "":
				self.mensagem('erro', 'Preencha o campo Código.')
			else:
				sql = "SELECT * FROM Clientes WHERE idClientes = %s" % (codigo)
				dados = self.banco.sqlSelect(sql)
				self.completaFormAltCliente(dados)
				self.interface.nbCliente.set_current_page(3)
	##########
	
	
	########## Formulário de alteração de cliente
	def formAltCliente(self, widget):
		valor = self.interface.treev.get_cursor()
		n = valor[0]
		if n == None:
			msg = gtk.MessageDialog(None, 0, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, 'Nenhum Cliente selecionado para Alteração')
			msg.set_position(gtk.WIN_POS_CENTER)
			resposta = msg.run()
			msg.destroy()
		else:
			cliente = self.interface.treev.get_selection()
			cliente.set_mode(gtk.SELECTION_MULTIPLE)
			" Pegando a linha selecionada "
			modelo, caminhos = cliente.get_selected_rows()
			for caminho in caminhos:
				kiter = modelo.get_iter(caminho)
				cod = modelo.get_value(kiter,0)
				" Chamando o Formulário de Alteração "
				self.interface.nbCliente.set_current_page(3)
				" Pegando os dados no DB "
				sql = "SELECT * FROM clientes WHERE idClientes = %s" % (cod)
				dados = self.banco.sqlSelect(sql)
				self.completaFormAltCliente(dados)
	##########
	
	
	########## Preenche o formulário de alteração de Clientes
	def completaFormAltCliente(self, dados):
		for linha in dados:
			" Preenchendo os campos do Formulário de alteração "
			self.interface.txtAltClienteId.props.text = linha[0]
			self.interface.txtAltClienteNome.props.text = linha[1]
			self.interface.txtAltClienteEndereco.props.text = linha[2]
			self.interface.txtAltClienteTelefone.props.text = linha[3]
			self.interface.txtAltClienteCidade.props.text = linha[4]
			self.interface.txtAltClienteCEP.props.text = linha[5]
			self.interface.txtAltClienteRG.props.text = linha[6]
			self.interface.txtAltClienteCPF.props.text = linha[7]
			ano, mes, dia = linha[8].split('-')
			dataN = dia+'/'+mes+'/'+ano
			self.interface.txtAltClienteDataN.props.text = dataN
			ano, mes, dia = linha[9].split('-')
			dataC = dia+'/'+mes+'/'+ano
			self.interface.txtAltClienteDataC.props.text = dataC
	##########
	
	
	########## Salvar a alteração do Clientes
	def salvaAltCliente(self, widget):
		" Pegando os dados do formulário "
		id = self.interface.txtAltClienteId.props.text
		nome = self.interface.txtAltClienteNome.props.text
		endereco = self.interface.txtAltClienteEndereco.props.text
		telefone = self.interface.txtAltClienteTelefone.props.text
		cidade = self.interface.txtAltClienteCidade.props.text
		cep = self.interface.txtAltClienteCEP.props.text
		rg = self.interface.txtAltClienteRG.props.text
		cpf = self.interface.txtAltClienteCPF.props.text
		dia, mes, ano = self.interface.txtAltClienteDataN.props.text.split('/')
		dataN = ano+'-'+mes+'-'+dia
		dia, mes, ano = self.interface.txtAltClienteDataC.props.text.split('/')
		dataC = ano+'-'+mes+'-'+dia
		sql = """ UPDATE clientes SET nome = '%s', endereco = '%s', telefone = '%s', 
		cidade = '%s', CEP = '%s', RG = '%s', CPF = '%s', dataN = '%s', dataC = '%s'
		WHERE idClientes = %s
		""" % (nome, endereco, telefone, cidade, cep, rg, cpf, dataN, dataC, id)
		self.banco.sqlCommit(sql)
		self.interface.nbCliente.set_current_page(1)
	##########
	
	
	########## Pega o Cliente para Novo Contrato
	def chamaFormClienteNovoContrato(self, widget):
		self.interface.formPegaClienteNovoContrato()
		self.interface.jFormClienteNovoContrato.show_all()
		self.interface.btClienteNovoContratoOK.connect('clicked', self.pegaClienteNovoContrato)
	########## Pega os dados do Cliente e coloca no formulário
	def pegaClienteNovoContrato(self, widget):
		cod = self.interface.txtCodClienteNovoContrato.props.text
		try:
			codInt = int(cod)
		except:
			self.mensagem('erro', 'Preencha corretamente o campo Código.')
		else:
			sql = "SELECT idClientes, nome FROM clientes WHERE idClientes = %s" % (cod)
			dados = self.banco.sqlSelect(sql)
			if dados == []:
				self.mensagem('erro', 'Não existe um cliente com este código.')
			else:
				for linha in dados:
					self.interface.txtNovoContratoCodCliente.props.text = linha[0]
					self.interface.txtNovoContratoNomeCliente.props.text = linha[1]
					self.interface.jFormClienteNovoContrato.destroy()
	##########
	
	########## Pega o Cliente para Novo Contrato
	def chamaFormPlanoNovoContrato(self, widget):
		self.interface.formPegaPlanoNovoContrato()
		self.interface.jFormPlanoNovoContrato.show_all()
		self.interface.btPlanoNovoContratoOK.connect('clicked', self.pegaPlanoNovoContrato)
	########## Pega os dados do Cliente e coloca no formulário
	def pegaPlanoNovoContrato(self, widget):
		cod = self.interface.txtCodPlanoNovoContrato.props.text
		try:
			codInt = int(cod)
		except:
			self.mensagem('erro', 'Preencha corretamente o campo Código.')
		else:
			sql = "SELECT idPlanos, descricao, valor FROM planos WHERE idPlanos = %s" % (cod)
			dados = self.banco.sqlSelect(sql)
			if dados == []:
				self.mensagem('erro', 'Não existe um plano com este código.')
			else:
				for linha in dados:
					self.interface.txtNovoContratoCodPlano.props.text = linha[0]
					self.interface.txtNovoContratoNomePlano.props.text = linha[1]
					self.interface.txtNovoContratoValorTotal.props.text = linha[2]
					self.interface.jFormPlanoNovoContrato.destroy()
	##########
	
	
	########## Chama a Janela com Calendario Inicio
	def chamaCalendarInicio(self, widget):
		self.interface.calendarioInicio()
		self.interface.jCalendarioInicio.show_all()
		" Conecta o Botão OK "
		self.interface.btCalendarioInicioOK.connect('clicked', self.pegaDataInicio)
	########## Pega a data da Janela Calendario Inicio
	def pegaDataInicio(self, widget):
		data = self.interface.calendarioI.get_date()
		ano = data[0]
		mes = data[1]+1
		if mes < 10:
			mes = "0%s" % (mes)
		dia = data[2]
		if dia < 10:
			dia = "0%s" % (dia)
		data = "%s/%s/%s" % (dia, mes, ano)
		self.interface.txtNovoContratoDataI.props.text = data
		self.interface.jCalendarioInicio.destroy()
	##########
	
	########## Chama a Janela com Calendario Termino
	def chamaCalendarTermino(self, widget):
		self.interface.calendarioTermino()
		self.interface.jCalendarioTermino.show_all()
		" Conecta o Botão OK "
		self.interface.btCalendarioTerminoOK.connect('clicked', self.pegaDataTermino)
	########## Pega a data da Janela Calendario Termino
	def pegaDataTermino(self, widget):
		data = self.interface.calendarioT.get_date()
		ano = data[0]
		mes = data[1]+1
		if mes < 10:
			mes = "0%s" % (mes)
		dia = data[2]
		if dia < 10:
			dia = "0%s" % (dia)
		data = "%s/%s/%s" % (dia, mes, ano)
		self.interface.txtNovoContratoDataT.props.text = data
		self.interface.jCalendarioTermino.destroy()
	
	########## Salva um novo Contrato no DB
	def salvarContrato(self, widget):
		" Pegando dados do forulário "
		cliente = self.interface.txtNovoContratoCodCliente.props.text
		plano = self.interface.txtNovoContratoCodPlano.props.text
		dInicio = self.interface.txtNovoContratoDataI.props.text
		dTermino = self.interface.txtNovoContratoDataT.props.text
		total = self.interface.txtNovoContratoValorTotal.props.text
		parcelas = self.interface.txtNovoContratoParcelas.props.text
		
		try:
			tempValorMensal = complex(total)
			tempParcelas = int(parcelas)
		except:
			self.mensagem('erro', 'Preencha os dados corretamente')
		else:
			id = self.banco.novaId('idContratos', 'contratos')
			sql = """INSERT INTO contratos VALUES (
			'%s', '%s', '%s', '%s', '%s', '%s','%s' 
			)""" % (id, cliente, plano, dInicio, dTermino, total, parcelas)
			self.banco.sqlCommit(sql)
			
			" Limpando os campos do Formulário "
			self.interface.txtNovoContratoCodCliente.props.text = ''
			self.interface.txtNovoContratoNomeCliente.props.text = ''
			self.interface.txtNovoContratoCodPlano.props.text = ''
			self.interface.txtNovoContratoNomePlano.props.text = ''
			self.interface.txtNovoContratoDataI.props.text = ''
			self.interface.txtNovoContratoDataT.props.text = ''
			self.interface.txtNovoContratoValorTotal.props.text = ''
			self.interface.txtNovoContratoParcelas.props.text = ''
	##########
	
	########## preenche o formulario de alteração de contrato
	def preencheFormAltContrato(self, widget):
		valor = self.interface.treevManutencaoAba2.get_cursor()
		n = valor[0]
		if n == None:
			self.mensagem('erro', 'Nenhun contrato selecionado')
		else:
			contrato = self.interface.treevManutencaoAba2.get_selection()
			contrato.set_mode(gtk.SELECTION_MULTIPLE)
			" Pegando a linha selecionada "
			modelo, caminhos = contrato.get_selected_rows()
			for caminho in caminhos:
				kiter = modelo.get_iter(caminho)
				cod = modelo.get_value(kiter,0)
				self.formAltContratos(cod)
			
	##########
		
	########## Pesquisar Contrato por códgigo
	def pesquisarContratoCodigo(self, widget):
		" Pega valor do formulário "
		codigo = self.interface.txtCodContratoPesContrato.props.text
		self.interface.txtCodContratoPesContrato.props.text = ''
		if codigo == '':
			self.mensagem('erro', 'Preencha o campo Código do contrato')
		else:
			try:
				TMPcodigo = int(codigo)
			except:
				self.mensagem('erro', 'Preencha o campo Código do contrato Corretamente')
			else:
				self.formAltContratos(codigo)
	##########
	
	########## Formulario de alteração de contratos
	def formAltContratos(self, codigo):
		" Chamando o Formulário de Alteração "
		self.interface.nbContrato.set_current_page(3)
		" Pegando os dados no DB "
		sql = """
		SELECT co.idContratos, c.nome, p.descricao, co.dataI, co.dataF,
		co.valor, co.parcelas 
		FROM contratos co 
		INNER JOIN clientes c ON co.clientes_idClientes = c.idClientes
		INNER JOIN planos p ON co.planos_idPlanos = p.idPlanos
		WHERE co.idContratos = %s""" % (codigo)
		dados = self.banco.sqlSelect(sql)
		for linha in dados:
			self.interface.txtAltContratoCod.props.text = linha[0]
			self.interface.txtAltContratoCliente.props.text = linha[1]
			self.interface.txtAltContratoPlano.props.text = linha[2]
			self.interface.txtAltContratoDataI.props.text = linha[3]
			self.interface.txtAltContratoDataT.props.text = linha[4]
			self.interface.txtAltContratoValor.props.text = linha[5]
			self.interface.txtAltContratoPercelas.props.text = linha[6]
			
	##########
	
	
	########## Pesquisar Contrato codigo de Cliente
	def pesquisarContratoCliente(self, widget):
		" Pega valor do formulário "
		codigo = self.interface.txtCodClientePesContrato.props.text
		self.interface.txtCodClientePesContrato.props.text = ''
		if codigo == '':
			self.mensagem('erro', 'Preencha o campo Código do cliente')
		else:
			try:
				TMPcodigo = int(codigo)
			except:
				self.mensagem('erro', 'Preencha o campo Código do cliente Corretamente')
			else:
				sql = """
				SELECT  contratos.idContratos, 
				clientes.nome, planos.descricao, contratos.dataI,
				contratos.dataF, contratos.valor, contratos.parcelas 
				FROM contratos 
				INNER JOIN clientes ON contratos.clientes_idClientes = clientes.idClientes
				INNER JOIN planos on contratos.planos_idPlanos = planos.idPlanos
				WHERE clientes_idClientes = %s""" % (codigo)
				dados = self.banco.sqlSelect(sql)
				self.interface.nbContrato.set_current_page(2)
				" Preenchendo o TreeView "
				model = self.interface.treevManutencaoAba2.get_model()
				model.clear()
				for linha in dados:
					model.append([linha[0], linha[1], linha[2], linha[3], linha[4], linha[5], linha[6]])
	##########
	
	########## Salva um novo plano no DB
	def salvarPlano(self, widget):
		" Pegando os valores do formulario "
		descricao = self.interface.txtNovoPlanoDescricao.props.text
		valor = self.interface.txtNovoPlanoValor.props.text
		aulas = self.interface.txtNovoPlanoAulas.props.text
		" verificando a validade dos dados "
		try:
			valorTMP = complex(valor)
			aulas = int(aulas)
		except:
			self.mensagem('erro', 'Preencha os campos corretamente')
		else:
			" Limpando os campos do formulário "
			self.interface.txtNovoPlanoDescricao.props.text = ''
			self.interface.txtNovoPlanoValor.props.text = ''
			self.interface.txtNovoPlanoAulas.props.text = ''
			" Pegando um novo ID "
			id = self.banco.novaId('idPlanos', 'planos')
			" Salvando os valores no DB "
			sql = """ INSERT INTO planos (idPlanos, descricao, valor, aulasSemanais)
			VALUES ('%s', '%s', '%s', '%s') """ % (id, descricao, valor, aulas)
			self.banco.sqlCommit(sql)
			self.interface.nbCliente.set_current_page(1)
	
	
	########## Pesquisar Plano por Descrição
	def pesquisarPlanoDescricao(self, widget):
		" Pegando os valores do formulário "
		descricao = self.interface.txtPesPlanoDescricao.props.text
		self.interface.txtPesPlanoDescricao.props.text = ""
		if descricao == '':
			self.mensagem('erro', 'Preencha o campo Descrição.')
		else:
			sql = " SELECT * FROM planos WHERE descricao LIKE '%" + descricao + "%'"
			dados = self.banco.sqlSelect(sql)
			self.interface.nbPlanos.set_current_page(2)
			model = self.interface.treevNbPlanosAba2.get_model()
			model.clear()
			for linha in dados:
				model.append([linha[0], linha[1], linha[2], linha[3]])
				
	
	########## Pesquisar Plano por Código
	def pesquisarPlanoCodigo(self, widget):
		" Pegando os valores do formulário "
		codigo = self.interface.txtPesPlanoCodigo.props.text
		self.interface.txtPesPlanoCodigo.props.text = ''
		try:
			codigoTMP = int(codigo)
		except:
			self.mensagem('erro', 'Preencha o campo Código corretamente.')
		else:
			sql = 'SELECT * FROM planos WHERE idPlanos = %s' % (codigo)
			dados = self.banco.sqlSelect(sql)
			for linha in dados:
				self.interface.txtCodAltPlano.props.text = linha[0]
				self.interface.txtDescricaoAltPlano.props.text = linha[1]
				self.interface.txtValorAltPlano.props.text = linha[2]
				self.interface.txtAulasAltPlano.props.text = linha[3]
			self.interface.nbPlanos.set_current_page(3)
	##########
	
	########## Preenche formulário de alteração de planos
	def preencheFormAltPlano(self, widget):
		valor = self.interface.treevNbPlanosAba2.get_cursor()
		n = valor[0]
		if n == None:
			mensagem('erro', 'Nenhum plano selecionado')
		else:
			" pegando as seleções "
			selecoes = self.interface.treevNbPlanosAba2.get_selection()
			selecoes.set_mode(gtk.SELECTION_MULTIPLE)
			" Pegando a linha selecionada "
			modelo, caminhos = selecoes.get_selected_rows()
			for caminho in caminhos:
				kiter = modelo.get_iter(caminho)
				codigo = modelo.get_value(kiter,0)
				sql = 'SELECT * FROM planos WHERE idPlanos = %s' % (codigo)
				dados = self.banco.sqlSelect(sql)
				for linha in dados:
					self.interface.txtCodAltPlano.props.text = linha[0]
					self.interface.txtDescricaoAltPlano.props.text = linha[1]
					self.interface.txtValorAltPlano.props.text = linha[2]
					self.interface.txtAulasAltPlano.props.text = linha[3]
				self.interface.nbPlanos.set_current_page(3)
	##########
	
	
	########## Salvar alteração em Planos
	def salvarAltPlanos(self, widget):
		" Pegando os valores do formulario "
		codigo = self.interface.txtCodAltPlano.props.text
		descricao = self.interface.txtDescricaoAltPlano.props.text
		valor = self.interface.txtValorAltPlano.props.text
		aulas = self.interface.txtAulasAltPlano.props.text
		" verificando a validade dos dados "
		try:
			valorTMP = complex(valor)
			aulas = int(aulas)
		except:
			self.mensagem('erro', 'Preencha os campos corretamente')
		else:
			" Limpando os campos do formulário "
			self.interface.txtCodAltPlano.props.text = ''
			self.interface.txtDescricaoAltPlano.props.text = ''
			self.interface.txtValorAltPlano.props.text = ''
			self.interface.txtAulasAltPlano.props.text = ''
			" Salvando os valores no DB "
			sql = """ UPDATE planos SET 
			descricao = '%s', valor = '%s',	aulasSemanais = '%s' 
			WHERE idPlanos = %s	""" % (descricao, valor, aulas, codigo)
			self.banco.sqlCommit(sql)
			self.interface.nbPlanos.set_current_page(1)
	##########
	
	##########
	def main(self):
		gtk.main()
	def deleteEvento(self, widget, event):
		return False
	def sair(self, widget):
		gtk.main_quit()
	##########

if __name__ == "__main__":
	pyAcAdmin = pyAcAdmin()
	pyAcAdmin.main()
